# main.s
    .section .data
format: .asciz "%d + %d = %d\n"  # 格式化字符串，用于printf

    .section .bss
    # 未初始化数据段

    .section .text
    .globl main

main:
    # 准备参数并调用add函数
    mov $16, %edi       # 第一个参数 a = 16 (edi)
    mov $23, %esi       # 第二个参数 b = 23 (esi)
    call add           # 调用add函数，结果存储在eax中

    # 准备printf的参数
    mov %eax, %ecx     # 将add的返回值（eax）作为printf的第四个参数
    mov %esi, %edx     # 将add的第二个参数（esi）作为printf的第三个参数
    mov %edi, %esi     # 将add的第一个参数（edi）作为printf的第二个参数
    lea format(%rip), %rdi  # 将格式化字符串地址作为printf的第一个参数
    xor %eax, %eax     # 设置eax为0，表示没有浮点数参数
    call printf        # 调用printf函数

    # 退出程序
    ret
